package com.ruoyi.user.service;

import com.ruoyi.user.domain.UserCoupon;

import java.util.List;
import java.util.Map;

public interface IUserCouponService {

    UserCoupon selectUserCouponById(Long userCouponId);

    List<UserCoupon> selectUserCouponList(UserCoupon userCoupon);

    int insertUserCoupon(UserCoupon userCoupon);

    int updateUserCoupon(UserCoupon userCoupon);

    int deleteUserCouponByIds(Long[] userCouponIds);

    int deleteUserCouponById(Long userCouponId);

    // 级联详情列表
    List<Map<String, Object>> selectUserCouponDetailList(UserCoupon userCoupon);

    // 根据用户ID查询级联详情列表
    List<Map<String, Object>> selectUserCouponDetailListByCustomerId(Long customerId);

    // 根据用户ID和优惠券状态查询级联详情列表
    List<Map<String, Object>> selectUserCouponDetailListByCustomerIdAndStatus(Long customerId, Integer status);

    // 根据用户ID和优惠券类型查询级联详情列表
    List<Map<String, Object>> selectUserCouponDetailListByCustomerIdAndType(Long customerId, Integer type);

    // 发券（插入时级联校验）
    int grantCouponToUser(UserCoupon userCoupon);

    // 用券（更新为已用时级联校验与计数）
    int useCoupon(UserCoupon userCoupon);
}
